The development of the EDVAC computer system of 1948 is often cited as the beginning of the computer era. Since that time, computer systems have evolved into extremely sophisticated devices, and computer systems may be found in many different settings. Computer systems typically include a combination of hardware, such as semiconductors and circuit boards, and software, also known as computer programs. As advances in semiconductor processing and computer architecture push the performance of the computer hardware higher, more sophisticated computer software has evolved to take advantage of the higher performance of the hardware, resulting in computer systems today that are much more powerful than just a few years ago.
One of the most important developments in making computers not only more powerful, but easier to use, was the development of sophisticated user interfaces. Early computer systems were programmed with a series of switches or buttons and provided little relevant feedback during the operation of the computer system. This type of interface proved cumbersome and, accordingly, increasingly more functional and interactive interfaces were developed to extend the functionality of computer systems.
One very popular user interface, that ultimately gained widespread adoption on any different computer systems, was the “command line interface.” Using a command line interface, the user interacted with the computer system by typing a specific command on a keyboard to instruct the computer regarding the desired operation to be performed. The command line interface was not intuitive, however, and still limited the use of computers to those who had the time and desire to learn a large number of relatively cryptic commands.
Recognizing the growing need for a more user-friendly interface, computer engineers and programmers developed the Graphical User Interface (GUI). A GUI uses visual representations of common items to allow a user to operate a computer system. In most GUI-based systems, various windows, icons, symbols, menus, etc. are manipulated or activated by a computer user via a pointing device (e.g., a keyboard, mouse, trackball, touchpad, trackpad, or speech recognition device), which allows the user to give instructions to the computer. The movement of the pointing device is usually translated to the movement of an animated arrow or cursor, displayed on the computer screen. By moving the pointing device, the user can position the cursor at various locations on the computer screen. Then, by activating a button on the pointing device, the user can invoke various commands and options on the graphical user interface.
Most graphical user interfaces make extensive use of windows. A window is usually, but not always, a rectangular portion of the display on a computer monitor that presents its contents seemingly independently of the rest of the screen. A window is typically manipulated by (1) opening and closing the window, e.g., by selecting an icon to start a program, (2) moving the window to any area of the screen by dragging (e.g., positioning the pointer over the window and moving the mouse or other pointing device with a button held down), (3) repositioning the window, so that the window appears to be behind or in front of other windows or objects on the screen, (4) adjusting the size (i.e., horizontal and/or vertical dimensions) and (5) scrolling to any section of the window contents, e.g., by using scroll bars along the bottom and right edges of the window, or by using a mouse wheel or keyboard commands.
The size of most windows can be adjusted over a wide range including full screen, a fraction of the screen, and more than the full screen. In the latter case, the desired section of the window can be viewed by moving the window to expose it. Windows can also be minimized, which results in their being replaced by an icon and/or their name, usually in a strip along the bottom of the screen, without actually closing the underlying application program. This flexibility is made possible by the various parts that can constitute a window. The parts of a window may include frames, vertical and horizontal scrollbars, drag strips (often along the top for dragging the entire window and along the other edges and lower corners for changing window size), buttons (for closing, maximizing and minimizing) and tabs (for moving among pages in a window).
Another feature of windows is the ability for multiple windows to be open simultaneously. This is particularly valuable in a multitasking environment, i.e., an operating system in which multiple programs can run seemingly simultaneously and without interfering with each other. Each window can display a different application, or it can display different files that have been opened or created with a single application.
Multiple open windows can be arranged with respect to each other in a variety of ways. They can be arranged so that they are contiguous and do not overlap (tiled windows) or so they do overlap (overlaid windows). Overlaid windows resemble a stack of documents lying on top of one another, with only the upper-most window displayed in full. Any window can be moved to the top of the stack and made the active window (i.e., ready for receiving user input) by positioning the pointer in any portion of it that is visible and clicking a mouse button. When applications are launched, they may open in a single window or multiple windows.
Various type of windows exist, and their functions and appearances can vary substantially. For example, child windows are windows that are opened either automatically or as a result of some user activity when using a parent window. They can range in functionality from the very simple to the full complement of controls. Message windows, also referred to as dialog boxes or pop-up messages are a type of child window. A dialog box is usually a small and very basic window that is opened by a program or by the operating system to provide information to the user and/or obtain information (or at least a response) from the user, including setting options or issuing commands.
Because the screen may contain so many windows, and because some windows may pop up or open unexpectedly, users are at risk for commands being carried out against unintended windows. For example, if the user issues a close command intended for a first window at approximately the same time that a second window unexpectedly pops up, opens, or launches, the close command may be unintentionally applied to the second window. If the user is watching carefully, the user might see a flicker of the second window before it closes, but the user might miss the second window entirely. The missed window might be an important calendar reminder for a meeting, or an urgent instant message from a supervisor, a customer, a coworker, or a family member, and the consequences of missing the window that was unintentionally closed might be severe.
Thus, there is a need for a better way to ensure that commands are applied against the intended window.